package priv.yiyuan.example.design.visitor;

/**
 * 计算文件总大小的访问者
 * <p>
 * 具体的访问者，实现了 FileSystemVisitor 接口，它在 visit 方法中累加文件大小，从而计算整个文件系统的
 * 总大小，在 visit 方法中，它只打印目录名称，不进行大小计算，因为目录本身没有大小，其大小由其包含的文件
 * 决定。
 *
 * @author YiYuan
 * @data 2025/8/1
 * @apoNote
 */
public class SizeCalculatingVisitor implements FileSystemVisitor {

    private long totalSize = 0;

    @Override
    public void visit(File file) {

        totalSize += file.getSize();
        System.out.println("Visiting file: " + file.getName() + ", size: " + file.getSize() + ", current total: " + totalSize);

    }

    @Override
    public void visit(Directory directory) {
        System.out.println("Visiting directory: " + directory.getName());
    }

    public long getTotalSize() {
        return totalSize;
    }
}
